// src/api/auth/index.js
import http from "@/axios/index.js";
import { handleSuccess } from "@/api/index.js";
import { ElMessage } from "element-plus"; // 使用 Element Plus 的消息组件

export const authApi = {
    // 为用户分配/取消分配角色
    assignRoles: (data) =>
        http.post('/api/auth/assignRoles', data)
            .then(res => handleSuccess(res, '用户角色分配成功'))
            .catch(error => {
                ElMessage.error(error.message || '用户角色分配失败');
                throw error;
            }),

    // 为角色分配/取消分配权限点
    assignAcls: (data) =>
        http.post('/api/auth/assignAcls', data)
            .then(res => handleSuccess(res, '角色权限分配成功'))
            .catch(error => {
                ElMessage.error(error.message || '角色权限分配失败');
                throw error;
            }),

    // 配置角色的数据权限范围（部门范围）
    dataScope: (data) =>
        http.post('/api/auth/dataScope', data)
            .then(res => handleSuccess(res, '数据权限配置成功'))
            .catch(error => {
                ElMessage.error(error.message || '数据权限配置失败');
                throw error;
            }),

    // 查询用户拥有的所有权限（含角色/权限点）
    getUserPermissions: (params) =>
        http.get('/api/auth/userPermissions', { params })
            .then(res => handleSuccess(res, '用户权限查询成功'))
            .catch(error => {
                ElMessage.error(error.message || '用户权限查询失败');
                throw error;
            }),

    // 手动刷新用户权限缓存
    refreshCache: () =>
        http.post('/api/auth/refreshCache')
            .then(res => handleSuccess(res, '权限缓存刷新成功'))
            .catch(error => {
                ElMessage.error(error.message || '权限缓存刷新失败');
                throw error;
            }),

    // 查询权限回收操作记录
    getRecycleLog: (params) =>
        http.get('/api/auth/recycleLog', { params })
            .then(res => handleSuccess(res, '权限回收记录查询成功'))
            .catch(error => {
                ElMessage.error(error.message || '权限回收记录查询失败');
                throw error;
            })
};
